package com.share.collection;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class CollectionDemo {

	public static void main(String[] args) {
		// Collection c = new ArrayList();

		// 1) 可以放入不同类型的对象
		// c.add("hello");
		// c.add(new Name("tan", "haiqin"));
		// c.add(new Integer(100));
		//
		// System.out.println(c.size());
		// System.out.println(c);

		// remove hello
		// c.remove("hello");
		// c.removeAll(c);
		// System.out.println(c.size());
		// System.out.println(c);

		// contain
		// System.out.println(c.contains("hello"));
		//
		// Name tName = new Name("tan", "haiqin");
		// System.out.println(c.contains(tName));

		// 2) hash set
		// Set s1 = new HashSet();
		// Set s2 = new HashSet();
		// s1.add("a");
		// s1.add("b");
		// s1.add("c");
		//
		// s2.add("d");
		// s2.add("a");
		// s2.add("b");
		//
		// Set sn = new HashSet(s1);
		// // sn中与s2相同的
		// sn.retainAll(s2);
		// System.out.println(sn);
		//
		// Set su = new HashSet(s1);
		// // 所有的
		// su.addAll(s2);
		// System.out.println(su);

		// 3) List
		// List l1 = new LinkedList();
		// for (int i = 0; i <= 5; i++) {
		// l1.add("a" + i);
		// }
		// System.out.println(l1);
		//
		// l1.add(3, "a100");
		// System.out.println(l1);
		//
		// l1.set(6, "a200");
		// System.out.println(l1);
		//
		// System.out.print((String) l1.get(2) + " ");
		// System.out.println(l1.indexOf("a3"));
		//
		// l1.remove(1);
		// System.out.println(l1);

		// 4) map
		// Map m1 = new HashMap();
		// Map m2 = new TreeMap();
		// m1.put("one", new Integer(1));
		// m1.put("two", new Integer(2));
		// m1.put("three", new Integer(3));
		// m2.put("A", new Integer(1));
		// m2.put("B", new Integer(2));
		//
		// System.out.println(m1.size());
		// System.out.println(m1);
		//
		// System.out.println(m1.containsKey("one"));
		// System.out.println(m2.containsValue(new Integer(1)));
		//
		// if (m1.containsKey("two")) {
		// int i = ((Integer) m1.get("two")).intValue();
		// System.out.println(i);
		// }
		//
		// Map m3 = new HashMap(m1);
		// System.out.println(m3);
		// System.out.println(m1);
		//
		// m3.putAll(m2);
		// System.out.println(m3);

		// 5) Iterator
		Collection c = new HashSet();
		c.add(new Name("f111", "l111"));
		c.add(new Name("f2", "l2"));
		c.add(new Name("f333", "l333"));

		Iterator i = c.iterator();
		while (i.hasNext()) {
			// next()的返回值为object类型，需要转换为相应的类型。
			Name n = (Name) i.next();
			System.out.print(n.getFirstName() + " ");
		}

		System.out.println();

		// 6)
//		for (Iterator i1 = c.iterator(); i1.hasNext();) {
//			Name n = (Name) i1.next();
//			if (n.getFirstName().length() < 3) {
//				// c.remove(n);//会报错,因为Iterator已经锁了不让其它用
//				i1.remove();
//				System.out.println(n.getFirstName());
//			}
//			System.out.println("firstName: " + n.getFirstName());
//		}

		// 7)
		Iterator i1 = c.iterator();
		while (i1.hasNext()) {
			// next()的返回值为object类型，需要转换为相应的类型。
			Name n = (Name) i1.next();
			System.out.println(n.getFirstName() + "  ");
		}

	}
}
